﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using FacturacionII.Modelo;
namespace FacturacionII.Clases
{
    class clsEspecificacionProducto
    {
        facturacionEntities objFactuacionEntidades;
        public clsEspecificacionProducto() { }

        public ArrayList CargarDatosGridView()
        {
            ArrayList lista = new ArrayList();
            objFactuacionEntidades = new facturacionEntities();
            var query = from ep in objFactuacionEntidades.especificacion_produto
                        join p in objFactuacionEntidades.producto on ep.id_producto equals p.id
                        join um in objFactuacionEntidades.unidades on ep.id_unidad equals um.id
                        join m in objFactuacionEntidades.marcas on ep.id_marca equals m.id
                        orderby ep.descripcion_corta ascending
                        select new
                        {
                            CODIGO = ep.id,
                            CODIGO_PRODUCTO = ep.id_producto,
                            PRODUCTO = p.descripcion,
                            CODIGO_BARRAS = ep.codigo_barra,
                            DESCRIPCION_CORTA = ep.descripcion_corta,
                            DESCRIPCION_LARGA = ep.descripcion_larga,
                            PCOMPRA = ep.costo,
                            PVENTA = ep.precio,
                            //CANTIDAD = ep.cantidad,
                            CODIGO_UNIDAD = ep.id_unidad,
                            UNIDAD = um.descripcion,
                            CODIGO_MARCA = ep.id_marca,
                            MARCA = m.descripcion
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }
            return lista;
        }

        public ArrayList BuscarDatosGridView(string especificacion)
        {
            ArrayList lista = new ArrayList();
            objFactuacionEntidades = new facturacionEntities();
            var query = from ep in objFactuacionEntidades.especificacion_produto
                        join p in objFactuacionEntidades.producto on ep.id_producto equals p.id
                        join um in objFactuacionEntidades.unidades on ep.id_unidad equals um.id
                        join m in objFactuacionEntidades.marcas on ep.id_marca equals m.id
                        where ep.codigo_barra.Contains(especificacion)
                        select new
                        {
                            CODIGO = ep.id,
                            CODIGO_PRODUCTO = ep.id_producto,
                            PRODUCTO = p.descripcion,
                            CODIGO_BARRAS = ep.codigo_barra,
                            DESCRIPCION_CORTA = ep.descripcion_corta,
                            DESCRIPCION_LARGA = ep.descripcion_larga,
                            PCOMPRA = ep.costo,
                            PVENTA = ep.precio,
                            //CANTIDAD = ep.cantidad,
                            CODIGO_UNIDAD = ep.id_unidad,
                            UNIDAD = um.descripcion,
                            CODIGO_MARCA = ep.id_marca,
                            MARCA = m.descripcion
                        };
            foreach (var datos in query)
            {
                lista.Add(datos);
            }
            return lista;
        }

        public void Guardar(int producto, string codigoBarra, string descripcionCorta,
            string descripcionLarga, decimal precioCompra, decimal precioVenta, decimal cantidad,
            string unidadMedida, int marca, int usuario)
        {
            objFactuacionEntidades = new facturacionEntities();
            especificacion_produto especificacionProducto = new especificacion_produto
            {
                id_producto = producto,
                codigo_barra = codigoBarra,
                descripcion_corta = descripcionCorta,
                descripcion_larga = descripcionLarga,
                costo = precioCompra,
                precio = precioVenta,
                //cantidad = cantidad,
                id_unidad = unidadMedida,
                id_marca = marca,
                id_usuario = usuario,
                fecha_registro = DateTime.Now
            };

            objFactuacionEntidades.AddToespecificacion_produto(especificacionProducto);
            objFactuacionEntidades.SaveChanges();
        }

        public void GuardarCambios(int  id, int producto, string codigoBarra, string descripcionCorta,
            string descripcionLarga, decimal precioCompra, decimal precioVenta, decimal cantidad,
            string unidadMedida, int marca, int usuario)
        {
            objFactuacionEntidades = new facturacionEntities();
            especificacion_produto especificacionProducto = objFactuacionEntidades.especificacion_produto.FirstOrDefault(
                a => a.id == id);
            especificacionProducto.id_producto = producto;
            especificacionProducto.codigo_barra = codigoBarra;
            especificacionProducto.descripcion_corta = descripcionCorta;
            especificacionProducto.descripcion_larga = descripcionLarga;
            especificacionProducto.costo = precioCompra;
            especificacionProducto.precio = precioVenta;
            //especificacionProducto.cantidad = cantidad;
            especificacionProducto.id_unidad = unidadMedida;
            especificacionProducto.id_marca = marca;
            especificacionProducto.id_usuario = usuario;
            objFactuacionEntidades.SaveChanges();
        }

        public void Eliminar(int id)
        {
            objFactuacionEntidades = new facturacionEntities();
            especificacion_produto producto = objFactuacionEntidades.especificacion_produto.FirstOrDefault(
                a => a.id == id);
            objFactuacionEntidades.DeleteObject(producto);
            objFactuacionEntidades.SaveChanges();
        }

    }
}
